package god;

import java.util.Calendar;
import java.util.Date;

public class J18StringBuilderCalendar {

	public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		sb.append("Hello, ").append("Java").append("!!");
		System.out.println(sb.toString());										// 문자열로 변환
		
		// 날짜와 시간 다루기
		Date today = new Date();														// java.util 을 import
		System.out.println(today);
		System.out.println(today.toLocaleString());						// deprecated 다음 버전에서 없어짐
		
		// 거주 지역 (국가)에 따라서 시간, 날짜 출력 : toLocaleString())
		// 하지만 다음 버전에서 사라질 메서드이므로 사용 자제
		// 대신, DateFormat() 클래스를 사용할 것을 추천
		
		// Date 클래스는 JDK 1.0 부터 지원
		// 하지만 다양한 날짜/시간을 처리 하기에는 기능이 너무 부족한 탓에
		// JDK 1.1 부터 Calendar 클래스 추가
		// Date 클래스의 대부분의 기능은 deprecated 됨
		// 하지만, Calendar 클래스를 이용할 경우 날짜/시간 처리에 비용이 많이 든다는 것이 단점
		
		Calendar now = Calendar.getInstance();								// 싱글톤 패턴. new 연산자로 여러개 만들어서 사용할 필요가 없기 때문에 싱글톤으로 객체 생성
		int year = now.get(Calendar.YEAR);
		int month = now.get(Calendar.MONTH) + 1;						// get은 0부터 30까지 정수를 리턴.
		int day = now.get(Calendar.DAY_OF_MONTH);
		int dayOfWeek = now.get(Calendar.DAY_OF_WEEK);
		int hour = now.get(Calendar.HOUR);
		int hourOfDay = now.get(Calendar.HOUR_OF_DAY);
		int ampm = now.get(Calendar.AM_PM);
		int minute = now.get(Calendar.MINUTE);
		int second = now.get(Calendar.SECOND);
		int millisecond = now.get(Calendar.MILLISECOND);
		
		String result1 = "";
		
		switch (dayOfWeek) {
		case 1 : result1 = "일요일"; break;
		case 2 : result1 = "월요일"; break;
		case 3 : result1 = "화요일"; break;
		case 4 : result1 = "수요일"; break;		
		case 5 : result1 = "목요일"; break;
		case 6 : result1 = "금요일"; break;
		case 7 : result1 = "토요일"; break;
		}
		
		String result2 = "";
		if (ampm == 1) 
			result2 = "오전";
		else result2 = "오후";

		StringBuilder sb1 = new StringBuilder();
		sb1.append(year).append("-").append(month).append("-").append(day).append(" ").append(result1).append(" ").append(hourOfDay).append("시")
		.append(result2).append(" ").append(hour).append("시").append(minute).append("분").append(second).append("초 ").append(millisecond);
		System.out.println(sb1.toString());
		
		// 한편 JDK 8 에는 JSR-310에 따라 새로운 날짜/시간 처리 라이브러리가 추가됨
		// LocalDateTime, ZonedDateTime
	}

}
